//using System;
//using System.IO;
//using System.Net.Http;
//using System.Text;
//using System.Collections.Generic;
//using System.Linq;
//using Hal;
//using Microsoft.VisualStudio.TestTools.UnitTesting;
//using RESTAgent.BasicMediaTypes;


//namespace Tavis.Http.Tests {
//    [TestClass]
//    public class HalTests {

//        [TestMethod]
//        public void CreateHalManually() {
//            var hal = new HalDocument();

//            hal.Root = new HalResource() {
//                                             Rel = "self",
//                                             Href = "http://example.org"
//                                         };
//            hal.Root.Contents = new Dictionary<string, HalNode>();
//            hal.Root.Contents.Add("foo", new HalResource() {
//                                                        Rel = "foo",
//                                                        Href = "http://example.org/foo"
//                                                    });
//            hal.Root.Contents.Add("bar", new HalLink() {
//                                                           Rel="bar",
//                                                           Href="http://example.org/bar"
//                                                       });

//            Assert.IsNotNull(hal);
//        }


//        [TestMethod]
//        public void CreateHalManually2() {
//            var hal = new HalDocument();
//            hal.Root = new HalResource() {
//                Rel = "self",
//                Href = "http://example.org"
//            };
//            hal.Root.Contents = new Dictionary<string, HalNode>();
//            hal.Root.Contents.Add("foo", new HalResource() {
//                Rel = "foo",
//                Href = "http://example.org/foo"
//            });
//            hal.Root.Contents.Add("bar", new HalLink() {
//                Rel = "bar",
//                Href = "http://example.org/bar"
//            });

//            Assert.IsNotNull(hal);
//        }
        

//        [TestMethod]
//        public void DeserializeHal() {
//            StringContent content = GetContent();

//            var hal = content.ReadAsHal();

//            Assert.IsNotNull(hal);
//        }

//        [TestMethod]
//        public void SerializeHal() {
//            //Arrange
//            StringContent content = GetContent();
//            var hal = content.ReadAsHal();

//            var stream = new MemoryStream();
//            //Act

//            hal.WriteAsXml(stream);

//            //Assert
//            stream.Position = 0;
//            var result = new StreamContent(stream);

//            var resultstring = result.ReadAsString();
//        }


//        [TestMethod]
//        public void FindRootLink() {
//            //Arrange
//            StringContent content = GetContent();
//            var hal = content.ReadAsHal();

//            //Act
//            var link = hal.FindLink("search");

//            //Assert
//            Assert.IsNotNull(link);
//            Assert.AreEqual("search", link.Rel);

//        }
//        [TestMethod]
//        public void FindRootResourceLink() {
//            //Arrange
//            StringContent content = GetContent();
//            var hal = content.ReadAsHal();

//            //Act
//            var link = hal.FindLink("owner");

//            //Assert
//            Assert.IsNotNull(link);
//            Assert.AreEqual("owner", link.Rel);
//        }

//        [TestMethod]
//        public void CanParseHalPath() {
//            //Arrange
            

//            //Act
//            var halpath = new HalPath("/foo/item[2]/bar");
//            var itemSegment = halpath.Segments[1];

//            //Assert
//            Assert.AreEqual(3, halpath.Segments.Count);
//            Assert.AreEqual("item", itemSegment.Rel);
//            Assert.AreEqual("2", itemSegment.Name);
//        }

//        [TestMethod]
//        public void FindRootResourceByNameLink() {
//            //Arrange
//            StringContent content = GetContent();
//            var hal = content.ReadAsHal();

//            //Act

//            var link = hal.FindLink("item[2]");

//            //Assert
//            Assert.IsNotNull(link);
//            Assert.AreEqual("item", link.Rel);

//        }
//        [TestMethod]
//        public void FindLinkInRootResource() {
//            //Arrange
//            StringContent content = GetContent();
//            var hal = content.ReadAsHal();

//            //Act
//            var link = hal.FindLink("owner/friend");

//            //Assert
//            Assert.IsNotNull(link);
//            Assert.AreEqual("friend", link.Rel);
//        }

//        [TestMethod]
//        public void FindLinkChildResource() {
//            //Arrange
//            StringContent content = GetContent();
//            var hal = content.ReadAsHal();

//            //Act
//            var link = hal.FindLink("item[2]/prev");

//            //Assert
//            Assert.IsNotNull(link);
//            Assert.AreEqual("prev",link.Rel);
//        }

//        private StringContent GetContent() {
//            return new StringContent(@"<resource rel='self' href='/todo-list'>
//    <link rel='search' href='/todo-list/search;{searchterm}' />
//    <link rel='description' href='/todo-list/description' />
//    <created_at>2010-01-16</created_at>
//    <updated_at>2010-02-21</updated_at>
//    <summary>An example list</summary>
//    <resource rel='owner' href='http://range14sux.com/mike'>
//        <name>Mike</name>
//        <age>36</age>
//        <link rel='friend' href='http://mamund.com/' />
//    </resource>
//    <resource rel='item' name='1' href='http://home.com/tasks/126'>
//        <title>Find Mug</title>
//        <content>Find my mug.</content>
//        <link rel='next' href='http://work.com/todos/make-some-tea' />
//    </resource>
//    <resource rel='item' name='2' href='http://work.com/todos/make-some-tea'>
//        <title>Make tea</title>
//        <content>For make drinking goodly tea that is green.</content>
//        <link rel='prev' href='http://home.com/tasks/126' />
//    </resource>
//</resource>");
//        }
//    }
//}
